package com.i2works.smartluolong.utils.basecommon;


import com.i2works.smartluolong.utils.exception.DAOException;

import java.util.List;
import java.util.Map;

/**
 * 公共DAO接口
 *
 * @author Liu Yutao <koal@vip.qq.com>
 * @date 2017/12/24 16:37
 */

public interface BaseCommonDAO<Q, D> {

    /**
     * 查询列表
     *
     * @param query 查询条件
     */
    List<D> queryList(Q query) throws DAOException;

    /**
     * 查询列表数量
     *
     * @param query 查询条件
     */
    Integer queryCount(Q query) throws DAOException;

    /**
     * 查询单个对象
     *
     * @param query 查询条件
     */
    D query(Q query) throws DAOException;

    /**
     * 查询检测状态
     *
     * @param query 查询条件
     */
    Integer queryCheck(Q query) throws DAOException;

    /**
     * 保存
     *
     * @param d 保存的对象
     */
    Integer save(D d) throws DAOException;

    /**
     * 更新
     *
     * @param d 更新的对象
     */
    void update(D d) throws DAOException;

    /**
     * 批量更新状态
     *
     * @param map 更新条件
     */
    void updateBatchStatus(Map map) throws DAOException;

    /**
     * 单个删除
     *
     * @param id 删除编号
     */
    void delete(Integer id) throws DAOException;

    /**
     * 单个删除
     *
     * @param id 删除编号
     */
    void deleteUUID(String id) throws DAOException;

    /**
     * 单个删除
     *   @param serviceId 实施清单编号
     */
    void deleteServiceId(String serviceId) throws DAOException;


    /**
     * 批量删除
     *
     * @param idsList 编号集合
     */
    void deleteBatch(List<Integer> idsList) throws DAOException;

}